package 字符串;

public class 字符串池_字符串在内存中的变化 {

	/*
	 * 字符串池 是内存中的一块空间，用来保存 若干个字符串的地址值。
	 * 不同的字符串用不同的地址，相同的字符串用相同的地址，保证不会有 相同的字符串用不同的地址 提高性能
	 * 直接双引号引用的字符串都在池里，而new出来的在堆里(池外面)
	 * 
	 * 基本数据类型 == 基本数据类型        比较数值大小
	 * 引用数据类型 == 引用数据类型        比较地址值    是否相同
	 * 		如果是True 说明两个对象的地址值相同    一定引用的是堆中的同一个地址
	 * 
	 * 但new 出来的 一定是重新开辟一个地址，不管字符串内容是不是相同
	 * new 出来的字符串 放在堆里，， 不会放在池里
	 */
	public static void main(String[] args) {

		// 直接引用的
		String str1 = "Hello";
		String str2 = "Hello";
		System.out.println( str1 == str2);
		
		// new出来的
		char[] arrayA = {'H','e','l','l','o'};

		String str3 = new String(arrayA);
		String str4 = new String(arrayA);
		System.out.println( str3 == str4);
		
		str4.equalsIgnoreCase(str4);
	}

}
